
/*----------------------------模块引入部分------------------------------*/
// 引入Express.js框架（Express是Node.js最流行的应用框架、用于快速搭建HTTP服务器和处理路由）。
const express = require('express');
// 引入 Node.js 内置的 HTTP 模块、用于创建HTTP服务器。
const http = require('http');
// 引入Node.js内置的路径模块、提供处理文件和目录路径的工具函数，如path.join()；
const path = require('path');

//引入自定义信令服务器模块、从当前signaling.js文件导入、这个模块包含WebRTC信令服务器的相关逻辑。
const SignalingServer = require('./signaling');

/*----------------------------模块引入部分------------------------------*/


/*-----------------------初始化服务器------------------------------*/
// 创建Express应用实例、这是整个Web应用的核心对象，用于配置中间件、路由等。
const app = express(); 
// 使用Express应用创建HTTP服务器
const server = http.createServer(app);
/*-----------------------初始化服务器------------------------------*/


/*-----------------------中间件配置部分---------------------------*/
// 设置静态文件目录（客户端文件）
// express.static()：Express 的内置中间件，用于提供静态文件（HTML、CSS、JS、图片等）

// path.join(__dirname, '../client')：构建静态文件目录的绝对路径

// __dirname：当前文件所在目录

// '../client'：上一级目录中的 client 文件夹

// 这意味着 ../client 目录下的所有文件都可以通过 URL 直接访问
app.use(express.static(path.join(__dirname, '../client')));
/*-----------------------中间件配置部分---------------------------*/

/*-----------------------路由配置部分---------------------------*/
// 提供客户端页面
// 作用：定义根路径 '/' 的路由处理
app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, '../client/login.html'));
});
// 说明：

// 当用户访问网站根路径时（如 http://localhost:3000/）

// 服务器会发送 ../client/login.html 文件给客户端

// res.sendFile()：发送整个文件内容，而不是渲染模板

// 定义 '/call' 路径的路由处理
app.get('/call', (req, res) => {
  res.sendFile(path.join(__dirname, '../client/call.html'));
});
// 说明：

// 当用户访问 /call 路径时（如 http://localhost:3000/call）

// 服务器发送 ../client/call.html 文件

// 这很可能是视频通话的主页面
/*-----------------------路由配置部分---------------------------*/

/*-----------------------启动信令服务器---------------------------*/
// 启动信令服务器
new SignalingServer(server);
/*
实例化 SignalingServer 类，并将 HTTP 服务器实例传递给它

这样信令服务器就可以在同一个端口上处理 WebSocket 连接

信令服务器负责处理 WebRTC 的 Offer/Answer 交换和 ICE 候选信息传递
 */
/*-----------------------启动信令服务器---------------------------*/

// 启动 HTTP 服务器
const PORT = process.env.PORT || 3000;
server.listen(PORT, () => {
  console.log(`服务器运行在 http://localhost:${PORT}`);
});
/*-----------------------启动信令服务器---------------------------*/
